0 CpxTRS
↳1 TrsToWeightedTrsProof (BOTH BOUNDS(ID, ID), 0 ms)
↳2 CpxWeightedTrs
↳3 TypeInferenceProof (BOTH BOUNDS(ID, ID), 0 ms)
↳4 CpxTypedWeightedTrs
↳5 CompletionProof (UPPER BOUND(ID), 0 ms)
↳6 CpxTypedWeightedCompleteTrs
↳7 NarrowingProof (BOTH BOUNDS(ID, ID), 0 ms)
↳8 CpxTypedWeightedCompleteTrs
↳9 CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID), 0 ms)
↳10 CpxRNTS
↳11 SimplificationProof (BOTH BOUNDS(ID, ID), 0 ms)
↳12 CpxRNTS
↳13 CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID), 0 ms)
↳14 CpxRNTS
↳15 IntTrsBoundProof (UPPER BOUND(ID), 150 ms)
↳16 CpxRNTS
↳17 IntTrsBoundProof (UPPER BOUND(ID), 146 ms)
↳18 CpxRNTS
↳19 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳20 CpxRNTS
↳21 IntTrsBoundProof (UPPER BOUND(ID), 173 ms)
↳22 CpxRNTS
↳23 IntTrsBoundProof (UPPER BOUND(ID), 7 ms)
↳24 CpxRNTS
↳25 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳26 CpxRNTS
↳27 IntTrsBoundProof (UPPER BOUND(ID), 352 ms)
↳28 CpxRNTS
↳29 IntTrsBoundProof (UPPER BOUND(ID), 123 ms)
↳30 CpxRNTS
↳31 FinalProof (⇔, 0 ms)
↳32 BOUNDS(1, n^2)
cond(true, x) → cond(odd(x), p(x))
odd(0) → false
odd(s(0)) → true
odd(s(s(x))) → odd(x)
p(0) → 0
p(s(x)) → x
cond(true, x) → cond(odd(x), p(x)) [1]
odd(0) → false [1]
odd(s(0)) → true [1]
odd(s(s(x))) → odd(x) [1]
p(0) → 0 [1]
p(s(x)) → x [1]
cond(true, x) → cond(odd(x), p(x)) [1]
odd(0) → false [1]
odd(s(0)) → true [1]
odd(s(s(x))) → odd(x) [1]
p(0) → 0 [1]
p(s(x)) → x [1]
cond :: true:false → 0:s → cond true :: true:false odd :: 0:s → true:false p :: 0:s → 0:s 0 :: 0:s false :: true:false s :: 0:s → 0:s |
(a) The obligation is a constructor system where every type has a constant constructor,
(b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols:
cond
odd
p
const
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
true => 1
0 => 0
false => 0
const => 0
cond(z, z') -{ 3 }→ cond(odd(x'), 1 + x') :|: z' = 1 + (1 + x'), z = 1, x' >= 0
cond(z, z') -{ 3 }→ cond(1, 0) :|: z = 1, z' = 1 + 0
cond(z, z') -{ 3 }→ cond(0, 0) :|: z = 1, z' = 0
odd(z) -{ 1 }→ odd(x) :|: x >= 0, z = 1 + (1 + x)
odd(z) -{ 1 }→ 1 :|: z = 1 + 0
odd(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ x :|: x >= 0, z = 1 + x
p(z) -{ 1 }→ 0 :|: z = 0
cond(z, z') -{ 3 }→ cond(odd(z' - 2), 1 + (z' - 2)) :|: z = 1, z' - 2 >= 0
cond(z, z') -{ 3 }→ cond(1, 0) :|: z = 1, z' = 1 + 0
cond(z, z') -{ 3 }→ cond(0, 0) :|: z = 1, z' = 0
odd(z) -{ 1 }→ odd(z - 2) :|: z - 2 >= 0
odd(z) -{ 1 }→ 1 :|: z = 1 + 0
odd(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ z - 1 :|: z - 1 >= 0
{ odd } { p } { cond } |
cond(z, z') -{ 3 }→ cond(odd(z' - 2), 1 + (z' - 2)) :|: z = 1, z' - 2 >= 0
cond(z, z') -{ 3 }→ cond(1, 0) :|: z = 1, z' = 1 + 0
cond(z, z') -{ 3 }→ cond(0, 0) :|: z = 1, z' = 0
odd(z) -{ 1 }→ odd(z - 2) :|: z - 2 >= 0
odd(z) -{ 1 }→ 1 :|: z = 1 + 0
odd(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ z - 1 :|: z - 1 >= 0
cond(z, z') -{ 3 }→ cond(odd(z' - 2), 1 + (z' - 2)) :|: z = 1, z' - 2 >= 0
cond(z, z') -{ 3 }→ cond(1, 0) :|: z = 1, z' = 1 + 0
cond(z, z') -{ 3 }→ cond(0, 0) :|: z = 1, z' = 0
odd(z) -{ 1 }→ odd(z - 2) :|: z - 2 >= 0
odd(z) -{ 1 }→ 1 :|: z = 1 + 0
odd(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ z - 1 :|: z - 1 >= 0
odd: runtime: ?, size: O(1) [1] |
cond(z, z') -{ 3 }→ cond(odd(z' - 2), 1 + (z' - 2)) :|: z = 1, z' - 2 >= 0
cond(z, z') -{ 3 }→ cond(1, 0) :|: z = 1, z' = 1 + 0
cond(z, z') -{ 3 }→ cond(0, 0) :|: z = 1, z' = 0
odd(z) -{ 1 }→ odd(z - 2) :|: z - 2 >= 0
odd(z) -{ 1 }→ 1 :|: z = 1 + 0
odd(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ z - 1 :|: z - 1 >= 0
odd: runtime: O(n1) [1 + z], size: O(1) [1] |
cond(z, z') -{ 2 + z' }→ cond(s, 1 + (z' - 2)) :|: s >= 0, s <= 1, z = 1, z' - 2 >= 0
cond(z, z') -{ 3 }→ cond(1, 0) :|: z = 1, z' = 1 + 0
cond(z, z') -{ 3 }→ cond(0, 0) :|: z = 1, z' = 0
odd(z) -{ z }→ s' :|: s' >= 0, s' <= 1, z - 2 >= 0
odd(z) -{ 1 }→ 1 :|: z = 1 + 0
odd(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ z - 1 :|: z - 1 >= 0
odd: runtime: O(n1) [1 + z], size: O(1) [1] |
cond(z, z') -{ 2 + z' }→ cond(s, 1 + (z' - 2)) :|: s >= 0, s <= 1, z = 1, z' - 2 >= 0
cond(z, z') -{ 3 }→ cond(1, 0) :|: z = 1, z' = 1 + 0
cond(z, z') -{ 3 }→ cond(0, 0) :|: z = 1, z' = 0
odd(z) -{ z }→ s' :|: s' >= 0, s' <= 1, z - 2 >= 0
odd(z) -{ 1 }→ 1 :|: z = 1 + 0
odd(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ z - 1 :|: z - 1 >= 0
odd: runtime: O(n1) [1 + z], size: O(1) [1] p: runtime: ?, size: O(n1) [z] |
cond(z, z') -{ 2 + z' }→ cond(s, 1 + (z' - 2)) :|: s >= 0, s <= 1, z = 1, z' - 2 >= 0
cond(z, z') -{ 3 }→ cond(1, 0) :|: z = 1, z' = 1 + 0
cond(z, z') -{ 3 }→ cond(0, 0) :|: z = 1, z' = 0
odd(z) -{ z }→ s' :|: s' >= 0, s' <= 1, z - 2 >= 0
odd(z) -{ 1 }→ 1 :|: z = 1 + 0
odd(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ z - 1 :|: z - 1 >= 0
odd: runtime: O(n1) [1 + z], size: O(1) [1] p: runtime: O(1) [1], size: O(n1) [z] |
cond(z, z') -{ 2 + z' }→ cond(s, 1 + (z' - 2)) :|: s >= 0, s <= 1, z = 1, z' - 2 >= 0
cond(z, z') -{ 3 }→ cond(1, 0) :|: z = 1, z' = 1 + 0
cond(z, z') -{ 3 }→ cond(0, 0) :|: z = 1, z' = 0
odd(z) -{ z }→ s' :|: s' >= 0, s' <= 1, z - 2 >= 0
odd(z) -{ 1 }→ 1 :|: z = 1 + 0
odd(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ z - 1 :|: z - 1 >= 0
odd: runtime: O(n1) [1 + z], size: O(1) [1] p: runtime: O(1) [1], size: O(n1) [z] |
cond(z, z') -{ 2 + z' }→ cond(s, 1 + (z' - 2)) :|: s >= 0, s <= 1, z = 1, z' - 2 >= 0
cond(z, z') -{ 3 }→ cond(1, 0) :|: z = 1, z' = 1 + 0
cond(z, z') -{ 3 }→ cond(0, 0) :|: z = 1, z' = 0
odd(z) -{ z }→ s' :|: s' >= 0, s' <= 1, z - 2 >= 0
odd(z) -{ 1 }→ 1 :|: z = 1 + 0
odd(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ z - 1 :|: z - 1 >= 0
odd: runtime: O(n1) [1 + z], size: O(1) [1] p: runtime: O(1) [1], size: O(n1) [z] cond: runtime: ?, size: O(1) [0] |
cond(z, z') -{ 2 + z' }→ cond(s, 1 + (z' - 2)) :|: s >= 0, s <= 1, z = 1, z' - 2 >= 0
cond(z, z') -{ 3 }→ cond(1, 0) :|: z = 1, z' = 1 + 0
cond(z, z') -{ 3 }→ cond(0, 0) :|: z = 1, z' = 0
odd(z) -{ z }→ s' :|: s' >= 0, s' <= 1, z - 2 >= 0
odd(z) -{ 1 }→ 1 :|: z = 1 + 0
odd(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ 0 :|: z = 0
p(z) -{ 1 }→ z - 1 :|: z - 1 >= 0
odd: runtime: O(n1) [1 + z], size: O(1) [1] p: runtime: O(1) [1], size: O(n1) [z] cond: runtime: O(n2) [8 + 3·z' + z'2], size: O(1) [0] |